/*
 * Copyright (c) 2007-2020 西安交通信息投资营运有限公司 版权所有
 */

package com.xci.edu.core.dao;

import com.github.lvyanyang.annotation.Paging;
import com.xci.edu.core.entity.ExamQuestion;
import com.xci.edu.core.entity.ExamRecordDetails;
import com.xci.edu.core.filter.ExamRecordDetailsFilter;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 考试试题明细数据层
 * @author 马星俊 maxingjun@xci96716.com
 * @since 2020-11-25 10:52:08
 */
public interface ExamRecordDetailsDao {
    /**
     * 新建考试试题明细
     * @param entity 考试试题明细实体
     * @return 返回影响的行数
     */
    int insert(@Param("entity") ExamRecordDetails entity);

    /**
     * 修改学员考试结果
     * @param entity 考试试题明细实体
     * @return 返回影响的行数
     */
    int update(@Param("entity") ExamRecordDetails entity);

    /**
     * 根据主键修改考试试题明细状态
     * @param id     考试试题明细主键
     * @param status 考试试题明细状态
     * @return 返回影响的行数
     */
    int updateStatus(@Param("id") Long id, @Param("status") Boolean status);

    /**
     * 根据主键删除考试试题明细
     * @param id 考试试题明细主键
     * @return 返回影响的行数
     */
    int deleteById(@Param("id") String id);


    /**
     * 根据主键查询单个考试试题明细
     * @param  id 考试试题明细主键
     * @return 返回考试试题明细实体
     */
    ExamRecordDetails selectById(@Param("id") Long id);

    /**
     * 根据主键查询单个考试试题明细
     * @param  recordId 考试记录主键
     * @return 返回考试试题明细
     */
    List<ExamQuestion> selectQuestionByRecordId(@Param("recordId") Long recordId);

    /**
     * 根据主键查询学员分数
     * @param  recordId 考试记录主键
     * @return 返回分数
     */
    Integer selectScoreByRecordId(@Param("recordId") Long recordId);

    /**
     * 查询考试试题明细列表
     * @param filter 过滤条件
     * @return 返回考试试题明细列表
     */
    List<ExamRecordDetails> selectList(@Param("filter") ExamRecordDetailsFilter filter);

    /**
     * 查询考试试题明细分页列表
     * @param filter 过滤条件
     * @return 返回考试试题明细分页列表
     */
    @Paging
    List<ExamRecordDetails> selectPageList(@Param("filter") ExamRecordDetailsFilter filter);
}